﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PlanificadorDeEventos.Models;
using PlanificadorDeEventos.Comun;
using PlanificadorDeEventos.Repositorios;
using PlanificadorDeEventos.Interfaces;


namespace PlanificadorDeEventos.Repositorios
{
    /// <summary>
    /// Representa el repositorio de las relaciones entre un usuario y su registro a un evento
    /// </summary>
    public class RepositorioEventoUsuarioRegistrados : RepositorioGenerico<EventoUsuarioRegistrado>, IRepositorioEventoUsuarioRegistrados
    {
        public RepositorioEventoUsuarioRegistrados(ModelContext context)
            : base(context) 
        { 
        }

        /// <summary>
        /// Obtiene una lista de EventoUsuarioRegistrado a partir del id del evento
        /// </summary>
        /// <param name="idEvento">Es el id del evento</param>
        public IEnumerable<EventoUsuarioRegistrado> ObtenerPorIdEvento(int idEvento)
        {
            return (from euo in this.dbSet where euo.EventoID.Equals(idEvento) select euo).ToList();
        }

        /// <summary>
        /// Obtiene una lista de EventoUsuarioRegistrado a partir del id del usuario
        /// </summary>
        /// <param name="idEvento">Es el id del usuario</param>
        public IEnumerable<EventoUsuarioRegistrado> ObtenerPorIdUser(int idUser)
        {
            return from euo in this.dbSet where euo.GuestID.Equals(idUser) select euo;
        }

        public EventoUsuarioRegistrado ObtenerPorIdUserIdEvento(int idUser,int idEvent)
        {
            return this.Get(eur => eur.EventoID.Equals(idEvent)).Where(eur => eur.GuestID.Equals(idUser)).SingleOrDefault();
        }
       
    }
}